_t_y_p_e Specifies the data type of each coordinate in the array.
Symbolic constants GGGGLLLL____BBBBYYYYTTTTEEEE, GGGGLLLL____SSSSHHHHOOOORRRRTTTT, GGGGLLLL____IIIINNNNTTTT, GGGGLLLL____FFFFLLLLOOOOAAAATTTT, and
GGGGLLLL____DDDDOOOOUUUUBBBBLLLLEEEE are accepted. The initial value is GGGGLLLL____FFFFLLLLOOOOAAAATTTT.
_s_t_r_i_d_e Specifies the byte offset between consecutive normals. If _s_t_r_i_d_e
is 0- the initial value-the normals are understood to be tightly
packed in the array. The initial value is 0.
_p_o_i_n_t_e_r Specifies a pointer to the first coordinate of the first normal
in the array. The initial value is 0.
DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
ffffggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrr specifies the location and data format of an array of
normals to use when rendering. _t_y_p_e specifies the data type of the
normal coordinates and _s_t_r_i_d_e gives the byte stride from one normal to
the next, allowing vertices and attributes to be packed into a single
array or stored in separate arrays. (Single-array storage may be more
efficient on some implementations; see ffffggggllllIIIInnnntttteeeerrrrlllleeeeaaaavvvveeeeddddAAAArrrrrrrraaaayyyyssss.) When a
normal array is specified, _t_y_p_e, _s_t_r_i_d_e, and _p_o_i_n_t_e_r are saved as
client-side state.
To enable and disable the normal array, call ffffggggllllEEEEnnnnaaaabbbblllleeeeCCCClllliiiieeeennnnttttSSSSttttaaaatttteeee and
ffffggggllllDDDDiiiissssaaaabbbblllleeeeCCCClllliiiieeeennnnttttSSSSttttaaaatttteeee with the argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY. If enabled, the
normal array is used when ffffggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssss, ffffggggllllDDDDrrrraaaawwwwEEEElllleeeemmmmeeeennnnttttssss, or
ffffggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnntttt is called.
Use ffffggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssss to construct a sequence of primitives (all of the same
type) from prespecified vertex and vertex attribute arrays. Use
ffffggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnntttt to specify primitives by indexing vertices and vertex
attributes and ffffggggllllDDDDrrrraaaawwwwEEEElllleeeemmmmeeeennnnttttssss to construct a sequence of primitives by
indexing vertices and vertex attributes.
NNNNOOOOTTTTEEEESSSS
ffffggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrr is available only if the GL version is 1.1 or greater.
The normal array is initially disabled and isn't accessed when
ffffggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnntttt, ffffggggllllDDDDrrrraaaawwwwEEEElllleeeemmmmeeeennnnttttssss, or ffffggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssss is called.
Execution of ffffggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrr is not allowed between ffffggggllllBBBBeeeeggggiiiinnnn and the
corresponding ffffggggllllEEEEnnnndddd, but an error may or may not be generated. If an
error is not generated, the operation is undefined.
ffffggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrr is typically implemented on the client side.
Since the normal array parameters are client-side state, they are not
saved or restored by ffffggggllllPPPPuuuusssshhhhAAAAttttttttrrrriiiibbbb and ffffggggllllPPPPooooppppAAAAttttttttrrrriiiibbbb. Use
ffffggggllllPPPPuuuusssshhhhCCCClllliiiieeeennnnttttAAAAttttttttrrrriiiibbbb and ffffggggllllPPPPooooppppCCCClllliiiieeeennnnttttAAAAttttttttrrrriiiibbbb instead.
EEEERRRRRRRROOOORRRRSSSS
GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____EEEENNNNUUUUMMMM is generated if _t_y_p_e is not an accepted value.
GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____VVVVAAAALLLLUUUUEEEE is generated if _s_t_r_i_d_e is negative.
ffffggggllllIIIIssssEEEEnnnnaaaabbbblllleeeedddd with argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY
ffffggggllllGGGGeeeetttt with argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY____TTTTYYYYPPPPEEEE
ffffggggllllGGGGeeeetttt with argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY____SSSSTTTTRRRRIIIIDDDDEEEE
ffffggggllllGGGGeeeettttPPPPooooiiiinnnntttteeeerrrrvvvv with argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY____PPPPOOOOIIIINNNNTTTTEEEERRRR
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCOOOOOOOORRRRDDDD____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT, GGGGLLLL____EEEEDDDDGGGGEEEE____FFFFLLLLAAAAGGGG____AAAARRRRRRRRAAAAYYYY or GGGGLLLL____EEEEDDDDGGGGEEEE____FFFFLLLLAAAAGGGG____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT
between a call to ffffggggllllNNNNeeeewwwwLLLLiiiisssstttt and the corresponding call to ffffggggllllEEEEnnnnddddLLLLiiiisssstttt.
Instead, enable or disable before the call to ffffggggllllNNNNeeeewwwwLLLLiiiisssstttt.
On InfiniteReality systems it is particularly important to minimize the
amount of data transferred from the application to the graphics pipe,
since the host-to-pipe bandwidth limit can cause a performance
bottleneck. One way to reduce the amount of data transferred per vertex
is to use properly-aligned byte and short data types whenever possible.
Accordingly, the EEEEXXXXTTTT____vvvveeeerrrrtttteeeexxxx____aaaarrrrrrrraaaayyyy extension on InfiniteReality systems
has been optimized for vertex information packed into the following data
structures. (Note: v represents vertex coordinates, c represents color
components, n represents normal coordinates, and t represents texture